home *** CD-ROM | disk | FTP | other *** search
/ CD Exchange / CD Exchange - Volume 1.iso / d.t.p / utils / propage / donsgenies / donsgenies.lha / Don'sGenies / BordersSimpleShapes.pprx < prev    next >
Text File  |  1993-05-25  |  27KB  |  836 lines

  1. /* This Genie puts a decorative border around a box, using data stored in the genie. The resulting border is merged into a single box. The current line and fill colours are used. 
  2. Genie written and © by Don Cox   July 92. Bug fixes Jan 93. Not public domain.  All rights reserved. */
  3.  
  4.  
  5. trace n
  6. address command
  7. signal on error
  8. signal on syntax
  9. signal on halt
  10. signal on break_c
  11. signal on break_d
  12. signal on break_e
  13.  
  14. if ~show("l", "gdarexxsupport.library") then
  15.     if ~addlib("gdarexxsupport.library", 0, -30,0) then
  16.     do
  17.         call ppm_Inform(1,"Please install the gdarexxsupport.library in your libs: directory before running this Genie.")
  18.     end
  19.  
  20. call ppm_AutoUpdate(0)
  21. call SafeEndEdit.rexx()
  22. cr="0a"x
  23.  
  24.  
  25. CurrentUnits = ppm_GetUnits()
  26.  
  27. select
  28.     when CurrentUnits = 1 then do
  29.         units="inches"
  30.         mul = 1
  31.         mul2 = 72
  32.         end
  33.     when CurrentUnits = 2 then do
  34.         units="mm"
  35.         mul = 10
  36.         mul2 = 28.4
  37.         end
  38.     otherwise do 
  39.         call ppm_SetUnits(2)
  40.         units="mm"
  41.         mul = 10
  42.         mul2 = 28.4
  43.         end
  44.     end
  45.  
  46. mainbox = ppm_ClickOnBox("  Click on box to be given a border")
  47. if mainbox = 0 then exit_msg("No box selected")
  48. mainpos = ppm_GetBoxPosition(mainbox)
  49. mainXpos = word(mainpos, 1)
  50. mainYpos = word(mainpos, 2)
  51. mainsize = ppm_GetBoxSize(mainbox)
  52. mainwidth = word(mainsize,1)
  53. mainheight = word(mainsize,2)
  54. mainangle = ppm_GetBoxAngle(mainbox)
  55.  
  56.  
  57. /* Initialize data strings  */
  58. cornerline1 = "" 
  59. cornerline2 = ""
  60. cornerline3 = ""
  61. cornerweight1 = "" 
  62. cornerweight2 = ""
  63. cornerweight3 = ""
  64. sideline1 = ""
  65. sideline2 = ""
  66. sideline3 = ""
  67. cornerXoffset = 0
  68. cornerYoffset = 0
  69. sideXoffset = 0
  70. sideYoffset = 0
  71. cornerfill1 = 0
  72. cornerfill2 = 0
  73. cornerfill3 = 0
  74. sidefill1 = 0
  75. sidefill2 = 0
  76. sidefill3 = 0
  77. lines = 1
  78.  
  79. list = "Greek Key"cr"Two Rules"cr"Two Rules Rounded"cr"Two Rules Reverse Rounded"cr"Three Rules"cr"Battlements"cr"Cutout"cr"Filled Squares"cr"Double Squares"cr"Off-Centre Squares"cr"Filled Triangles"cr"Filled Triangles 2"cr"Three Ls"cr"Bars"
  80. chosen = ppm_SelectFromList("Select Border Pattern",30,14,0,list)
  81. if chosen = "" then exit_msg("Aborted by User")
  82.  
  83. /* Data for various patterns. The numbers are lists of coordinates in the format required by the DrawPoly command.  */
  84.  
  85. select 
  86.  
  87.     when chosen = "Bars" then do
  88.         cornerline1 = "0 0"cr"3 0"cr"3 3"cr"0 3"cr"0 0"
  89.         cornerline2 = "5 0"cr"7 0"cr"7 7"cr"0 7"cr"0 5"cr"5 5"cr"5 0"
  90.         cornerline3 = "9 0"cr"11 0"cr"11 11"cr"0 11"cr"0 9"cr"9 9"cr"9 0"
  91.         sideline1 = "1 0"cr"3 0"cr"3 12"cr"1 12"cr"1 0"
  92.         sideline2 = "5 0"cr"7 0"cr"7 12"cr"5 12"cr"5 0"
  93.         sideheight = 12
  94.         sidewidth = 8
  95.         sideXoffset = 1
  96.         sideYoffset = 0
  97.         cornerheight = 12
  98.         cornerwidth = 12
  99.         cornerXoffset = 0
  100.         cornerYoffset = 0
  101.         cornerfill1 = 1
  102.         cornerfill2 = 1
  103.         cornerfill3 = 1
  104.         sidefill1 = 1
  105.         sidefill2 = 1
  106.         sidefill3 = 0
  107.         lines = 0   /* number of line weights to be set by user  */
  108.         end
  109.  
  110.     when chosen = "Three Ls" then do
  111.         cornerline1 = "0 0"cr"4 0"cr"4 4"cr"0 4"cr"0 0"
  112.         cornerline2 = "6 0"cr"9 0"cr"9 9"cr"0 9"cr"0 6"cr"6 6"cr"6 0"
  113.         sideline1 = "1 0"cr"3 0"cr"3 8"cr"11 8"cr"11 10"cr"1 10"cr"1 0"
  114.         sideline2 = "5 0"cr"7 0"cr"7 4"cr"11 4"cr"11 6"cr"5 6"cr"5 0"
  115.         sideline3 = "9 0"cr"11 0"cr"11 2"cr"9 2"cr"9 0"
  116.         sideheight = 10
  117.         sidewidth = 12
  118.         sideXoffset = 1
  119.         sideYoffset = 0
  120.         cornerheight = 10
  121.         cornerwidth = 10
  122.         cornerXoffset = 0
  123.         cornerYoffset = 0
  124.         cornerfill1 = 1
  125.         cornerfill2 = 1
  126.         sidefill1 = 1
  127.         sidefill2 = 1
  128.         sidefill3 = 1
  129.         lines = 0
  130.         end
  131.  
  132.     when chosen = "Filled Triangles 2" then do
  133.         cornerline1 = "4.3 0"cr"4.3 4.3"cr"0 4.3"cr"4.3 0"
  134.         sideline1 = "0 0"cr"4 0"cr"0 4"cr"0 0"
  135.         sideline2 = "5 1"cr"5 5"cr"1 5"cr"5 1"
  136.         sideheight = 5
  137.         sidewidth = 6.4
  138.         sideXoffset = 0.7
  139.         sideYoffset = 0
  140.         cornerheight = 5
  141.         cornerwidth = 5
  142.         cornerXoffset = 0
  143.         cornerYoffset = 0
  144.         cornerfill1 = 1
  145.         sidefill1 = 1
  146.         sidefill2 = 1
  147.         sidefill3 = 0
  148.         lines = 0
  149.         end
  150.  
  151.     when chosen = "Filled Triangles" then do
  152.         cornerline1 = "2.6 0"cr"2.6 2.6"cr"0 2.6"cr"2.6 0"
  153.         sideline1 = "0 0"cr"4 4"cr"0 4"cr"0 0"
  154.         sideline2 = "2 0"cr"10 0"cr"6 4"cr"2 0"
  155.         sideline3 = "12 0"cr"12 4"cr"8 4"cr"12 0"
  156.         sideheight = 4
  157.         sidewidth = 12
  158.         sideXoffset = 0
  159.         sideYoffset = 0
  160.         cornerheight = 4
  161.         cornerwidth = 4
  162.         cornerXoffset = 0
  163.         cornerYoffset = 0
  164.         cornerfill1 = 1
  165.         sidefill1 = 1
  166.         sidefill2 = 1
  167.         sidefill3 = 1
  168.         lines = 0
  169.         end
  170.  
  171.     when chosen = "Off-Centre Squares" then do
  172.         cornerline1 = "0 0"cr"4 0"cr"4 4"cr"0 4"cr"0 0"
  173.         cornerline2 = "0 0"cr"2 0"cr"2 2"cr"0 2"cr"0 0"
  174.         sideline1 = "1 0"cr"5 0"cr"5 4"cr"1 4"cr"1 0"
  175.         sideline2 = "1 0"cr"3 0"cr"3 2"cr"1 2"cr"1 0"
  176.         sideheight = 5
  177.         sidewidth = 6
  178.         sideXoffset = 1
  179.         sideYoffset = 0
  180.         cornerheight = 5
  181.         cornerwidth = 5
  182.         cornerXoffset = 0
  183.         cornerYoffset = 0
  184.         cornerfill1 = 0
  185.         sidefill1 = 0
  186.         lines = 1
  187.         end
  188.  
  189.     when chosen = "Double Squares" then do
  190.         cornerline1 = "0 0"cr"4 0"cr"4 4"cr"0 4"cr"0 0"
  191.         cornerline2 = "1 1"cr"3 1"cr"3 3"cr"1 3"cr"1 1"
  192.         sideline1 = "1 0"cr"5 0"cr"5 4"cr"1 4"cr"1 0"
  193.         sideline2 = "2 1"cr"4 1"cr"4 3"cr"2 3"cr"2 1"
  194.         sideheight = 5
  195.         sidewidth = 6
  196.         sideXoffset = 1
  197.         sideYoffset = 0
  198.         cornerheight = 5
  199.         cornerwidth = 5
  200.         cornerXoffset = 0
  201.         cornerYoffset = 0
  202.         cornerfill1 = 0
  203.         sidefill1 = 0
  204.         lines = 1
  205.         end
  206.  
  207.     when chosen = "Filled Squares" then do
  208.         cornerline1 = "0 0"cr"4 0"cr"4 4"cr"0 4"cr"0 0"
  209.         sideline1 = "1 0"cr"5 0"cr"5 4"cr"1 4"cr"1 0"
  210.         sideheight = 5
  211.         sidewidth = 6
  212.         sideXoffset = 1
  213.         sideYoffset = 0
  214.         cornerheight = 5
  215.         cornerwidth = 5
  216.         cornerXoffset = 0
  217.         cornerYoffset = 0
  218.         cornerfill1 = 1
  219.         sidefill1 = 1
  220.         lines = 0
  221.         end
  222.  
  223.     when chosen = "Cutout" then do
  224.         cornerline1 = "0 1"cr"0 0"cr"1 0"
  225.         sideline1 = "0 0"cr"1 0"
  226.         sideline2 = "3 0"cr"4 0"
  227.         sideheight = 1
  228.         sidewidth = 4
  229.         sideXoffset = 0
  230.         sideYoffset = 0
  231.         cornerheight = 1
  232.         cornerwidth = 1
  233.         cornerXoffset = 0
  234.         cornerYoffset = 0
  235.         lines = 1
  236.         end
  237.  
  238.     when chosen = "Battlements" then do
  239.         cornerline1 = "0 0"cr"3.3 0"cr"3.3 2.3"cr"2.3 2.3"cr"2.3 3.3"cr"0 3.3"cr"0 0"
  240.         sideline1 = "0 6"cr"1 6"cr"1 0"cr"3 0"cr"3 6"cr"4 6"
  241.         sideheight = 6
  242.         sidewidth = 4
  243.         sideXoffset = 0
  244.         sideYoffset = 0
  245.         cornerheight = 4
  246.         cornerwidth = 4
  247.         cornerXoffset = 0
  248.         cornerYoffset = 0
  249.         lines = 1
  250.         end
  251.  
  252.     when chosen = "Greek Key" then do
  253.         sideline1 = "0 0"cr"6 0"cr"6 5"cr"3 5"cr"3 3"cr"2 3"cr"2 6"cr"7 6"cr"7 0"cr"8 0"
  254.         sideline2 = "0 1"cr"5 1"cr"5 4"cr"4 4"cr"4 2"cr"1 2"cr"1 7"cr"8 7"cr"8 0.8"
  255.         sideheight = 8
  256.         sidewidth = 8
  257.         sideXoffset = 0
  258.         sideYoffset = 0
  259.         cornerheight = 8
  260.         cornerwidth = 8
  261.         cornerXoffset = 0
  262.         cornerYoffset = 0
  263.         Cornerline1 = "0 8"cr"0 0"cr"6 0"cr"6 5"cr"2 5"cr"2 2"cr"4 2"cr"4 3"cr"3 3"cr"3 4"cr"5 4"cr"5 1"cr"1 1"cr"1 6"cr"7 6"cr"7 0"cr"8 0"
  264.         Cornerline2 = "1 8"cr"1 7"cr"8 7"cr"8 0.8"
  265.         lines = 0
  266.         end
  267.  
  268.     when chosen = "Two Rules" then do
  269.         sideline1 = ""
  270.         sideline2 = ""
  271.         Cornerline1 = ""
  272.         cornerline2 = ""
  273.         lines = 2
  274.         end
  275.  
  276.     when chosen = "Two Rules Rounded" | chosen = "Two Rules Reverse Rounded" then do
  277.         sideline1 = ""
  278.         sideline2 = ""
  279.         Cornerline1 = ""
  280.         cornerline2 = ""
  281.         lines = 100    /* impossible number as a flag */
  282.         end
  283.  
  284.     when chosen = "Three Rules" then do
  285.         sideline1 = ""
  286.